<schema targetNamespace="http://www.opengis.net/gml/3.3/ce" xmlns:gmlce="http://www.opengis.net/gml/3.3/ce" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xml="http://www.w3.org/XML/1998/namespace" elementFormDefault="qualified" version="3.3.0">
  <annotation>
    <documentation>geometryCompact.xsd, part of GML 3.3. Copyright (c) [2011] Open Geospatial Consortium, Inc. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/.</documentation>
  </annotation>
  <import namespace="http://www.opengis.net/gml/3.2" schemaLocation="../../gml/3.2.1/gml.xsd" />
  <element name="SimplePolygon" type="gmlce:SimplePolygonType" substitutionGroup="gmlce:AbstractSimplePolygon">
    <annotation>
      <documentation>A SimplePolygon is a specialized polygon that has a simplified encoding of the logically equivalent GML 3.2 Surface with a single GML 3.2 PolygonPatch as its surface patch consisting of a single LinearRing as its exterior boundary and does not have any interior boundary. Thus the usage of the term 'simple' here refers to a specialized polygon with a _simplified_ encoding, which is _simply_ connected (no interior rings) and uses a _simple_ closed curve (no self-crossings) to represent its single boundary ring.</documentation>
    </annotation>
  </element>
  <element name="AbstractSimplePolygon" type="gml:AbstractSurfaceType" substitutionGroup="gml:AbstractSurface">
    <annotation>
      <documentation>Abstract element representative of a substitution affiliation</documentation>
    </annotation>
  </element>
  <complexType name="SimplePolygonType">
    <complexContent>
      <extension base="gml:AbstractSurfaceType">
        <sequence>
          <choice>
            <choice minOccurs="3" maxOccurs="unbounded">
              <element ref="gml:pos" />
              <element ref="gml:pointProperty" />
            </choice>
            <element ref="gml:posList" />
          </choice>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleRectangle" type="gmlce:SimpleRectangleType" substitutionGroup="gmlce:AbstractSimplePolygon">
    <annotation>
      <documentation>A SimpleRectangle is the special case of a simple polygon, which has exactly 4 control points in its boundary encoding representing the 4 corners of the rectangle.</documentation>
    </annotation>
  </element>
  <complexType name="SimpleRectangleType">
    <complexContent>
      <extension base="gml:AbstractSurfaceType">
        <sequence>
          <choice>
            <choice minOccurs="4" maxOccurs="4">
              <element ref="gml:pos" />
              <element ref="gml:pointProperty" />
            </choice>
            <element ref="gml:posList" />
          </choice>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleTriangle" type="gmlce:SimpleTriangleType" substitutionGroup="gmlce:AbstractSimplePolygon">
    <annotation>
      <documentation>A SimpleTriangle is the special case of a simple polygon, which has exactly 3 control points in its boundary encoding representing the 3 corners of the triangle.</documentation>
    </annotation>
  </element>
  <complexType name="SimpleTriangleType">
    <complexContent>
      <extension base="gml:AbstractSurfaceType">
        <sequence>
          <choice>
            <choice minOccurs="3" maxOccurs="3">
              <element ref="gml:pos" />
              <element ref="gml:pointProperty" />
            </choice>
            <element ref="gml:posList" />
          </choice>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleArcString" type="gmlce:SimpleArcStringType" substitutionGroup="gmlce:AbstractSimpleArcString">
    <annotation>
      <documentation>A SimpleArcString is a specialized curve that has a simplified encoding of the logically equivalent GML 3.2 Curve with one or more GML 3.2 Arc segments</documentation>
    </annotation>
  </element>
  <element name="AbstractSimpleArcString" type="gml:AbstractCurveType" substitutionGroup="gml:AbstractCurve">
    <annotation>
      <documentation>Abstract element representative of a substitution affiliation</documentation>
    </annotation>
  </element>
  <complexType name="SimpleArcStringType">
    <complexContent>
      <extension base="gml:AbstractCurveType">
        <sequence>
          <choice>
            <choice minOccurs="3" maxOccurs="unbounded">
              <element ref="gml:pos" />
              <element ref="gml:pointProperty" />
            </choice>
            <element ref="gml:posList" />
          </choice>
        </sequence>
        <attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArc3Points" />
        <attribute name="numArc" type="integer" />
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleArc" type="gmlce:SimpleArcType" substitutionGroup="gmlce:AbstractSimpleArcString">
    <annotation>
      <documentation>A SimpleArc is a specialized curve that has a simplified encoding of the logically equivalent GML 3.2 Curve with a single GML 3.2 ArcString segment .</documentation>
    </annotation>
  </element>
  <complexType name="SimpleArcType">
    <complexContent>
      <extension base="gml:AbstractCurveType">
        <sequence>
          <choice>
            <choice minOccurs="3" maxOccurs="3">
              <element ref="gml:pos" />
              <element ref="gml:pointProperty" />
            </choice>
            <element ref="gml:posList" />
          </choice>
        </sequence>
        <attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArc3Points" />
        <attribute name="numArc" type="integer" fixed="1" />
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleArcByCenterPoint" type="gmlce:SimpleArcByCenterPointType" substitutionGroup="gmlce:AbstractSimpleArcString">
    <annotation>
      <documentation>A SimpleArcByCenterPoint is a specialized curve that has a simplified encoding of the logically equivalent GML 3.2 Curve with a single GML 3.2 SimpleArcByCenterPoint segment.</documentation>
    </annotation>
  </element>
  <complexType name="SimpleArcByCenterPointType">
    <complexContent>
      <extension base="gml:AbstractCurveType">
        <sequence>
          <choice>
            <choice>
              <element ref="gml:pos" />
              <element ref="gml:pointProperty" />
            </choice>
            <element ref="gml:posList" />
          </choice>
          <element name="radius" type="gml:LengthType" />
          <!--note that start and end angle are mandatory in this encoding unlike gml 3.2 ArcByCentrePoint-->
          <element name="startAngle" type="gml:AngleType" />
          <element name="endAngle" type="gml:AngleType" />
        </sequence>
        <attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArcCenterPointWithRadius" />
        <attribute name="numArc" type="integer" use="required" fixed="1" />
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleArcStringByBulge" type="gmlce:SimpleArcStringByBulgeType" substitutionGroup="gmlce:AbstractSimpleArcString">
    <annotation>
      <documentation>A SimpleArcStringByBulge is a specialized curve that has a simplified encoding of the logically equivalent GML 3.2 Curve with one or more GML 3.2 ArcByBulge segments.</documentation>
    </annotation>
  </element>
  <complexType name="SimpleArcStringByBulgeType">
    <complexContent>
      <extension base="gml:AbstractCurveType">
        <sequence>
          <choice>
            <choice minOccurs="2" maxOccurs="unbounded">
              <element ref="gml:pos" />
              <element ref="gml:pointProperty" />
            </choice>
            <element ref="gml:posList" />
          </choice>
          <element name="bulge" type="double" maxOccurs="unbounded" />
          <element name="normal" type="gml:VectorType" maxOccurs="unbounded" />
        </sequence>
        <attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArc2PointWithBulge" />
        <attribute name="numArc" type="integer" />
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleArcByBulge" type="gmlce:SimpleArcByBulgeType" substitutionGroup="gmlce:AbstractSimpleArcString">
    <annotation>
      <documentation>A SimpleArcStringByBulge is a specialized curve that has a simplified encoding of the logically equivalent GML 3.2 Curve with one GML 3.2 ArcByBulge segment.</documentation>
    </annotation>
  </element>
  <complexType name="SimpleArcByBulgeType">
    <complexContent>
      <extension base="gml:AbstractCurveType">
        <sequence>
          <choice>
            <choice minOccurs="2" maxOccurs="2">
              <element ref="gml:pos" />
              <element ref="gml:pointProperty" />
            </choice>
            <element ref="gml:posList" />
          </choice>
          <element name="bulge" type="double" maxOccurs="unbounded" />
          <element name="normal" type="gml:VectorType" maxOccurs="unbounded" />
        </sequence>
        <attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArc2PointWithBulge" />
        <attribute name="numArc" type="integer" fixed="1" />
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleCircle" type="gmlce:SimpleArcType" substitutionGroup="gmlce:AbstractSimpleArcString">
    <annotation>
      <documentation>A SimpleCircle is a specialized curve that has a simplified encoding of the logically equivalent GML 3.2 Curve with a single GML 3.2 Circle segment.</documentation>
    </annotation>
  </element>
  <element name="SimpleCircleByCenterPoint" type="gmlce:SimpleArcByCenterPointType" substitutionGroup="gmlce:AbstractSimpleArcString" />
  <complexType name="SimpleMultiPointType">
    <complexContent>
      <extension base="gml:AbstractGeometricAggregateType">
        <sequence>
          <element ref="gml:posList" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="SimpleMultiPoint" type="gmlce:SimpleMultiPointType" substitutionGroup="gml:AbstractGeometricAggregate" />
  <complexType name="MultiPointPropertyType">
    <choice minOccurs="0">
      <element ref="gml:MultiPoint" />
      <element ref="gmlce:SimpleMultiPoint" />
    </choice>
    <attributeGroup ref="gml:AssociationAttributeGroup" />
    <attributeGroup ref="gml:OwnershipAttributeGroup" />
  </complexType>
</schema>
